// 请求模块基于axios封装
import axios from 'axios'
import store from '@/store'
// 导入处理大数据的包
import JSONBig from 'json-bigint'
// use 处理大数字//只会处理大数据
// 使用时需要把bigNumber对象进行转换
// JSONBig.parse()
// JSONBig.stringify()

const { user } = store.state
// 记得在bearer后加空格
const res = axios.create({
  // 接口的基础连接
  baseURL: 'http://toutiao-app.itheima.net/',
  // 自定义返回的元素数据,axios会默认用JSON.parse
  // `transformResponse` 在传递给 then/catch 前，允许修改响应数据
  transformResponse: [
    function (data) {
      // 对 data 进行任意转换处理
      try {
        return JSONBig.parse(data)
      } catch (err) {
        return data
      }
    }
  ]
})

// 请求拦截器
res.interceptors.request.use(
  (config) => {
    if (user && user.token) {
      config.headers.Authorization = 'Bearer ' + user.token
    }
    // 这里务必要返回config对象，否则就请求停在此处了
    return config
  },
  (error) => {
    // Do something with request error
    // 出错还没有发出去
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  (response) => {
    // Do something before response is sent
    return response
  },
  (error) => {
    // Do something with response error
    return Promise.reject(error)
  }
)

export default res
